﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HGPFramework
{
    public static class HGPText2Number
    {
        private static string ReadGroup3(string G3)
        {
            string[] strArray = new string[] { " Kh\x00f4ng", " Một", " Hai", " Ba", " Bốn", " Năm", " S\x00e1u", " Bảy", " T\x00e1m", " Ch\x00edn" };
            string str = "";
            if (G3 == "000")
            {
                return "";
            }
            char ch = G3[0];
            str = strArray[int.Parse(ch.ToString())] + " Trăm";
            ch = G3[1];
            if (ch.ToString() == "0")
            {
                ch = G3[2];
                if (ch.ToString() == "0")
                {
                    return str;
                }
                ch = G3[2];
                return (str + " Lẻ" + strArray[int.Parse(ch.ToString())]);
            }
            ch = G3[1];
            str = str + strArray[int.Parse(ch.ToString())] + " Mươi";
            ch = G3[2];
            if (ch.ToString() == "5")
            {
                str = str + " Lăm";
            }
            else
            {
                ch = G3[2];
                if (ch.ToString() != "0")
                {
                    ch = G3[2];
                    str = str + strArray[int.Parse(ch.ToString())];
                }
            }
            return str;
        }

        /// <summary>
        /// Convert string number to text
        /// </summary>
        /// <param name="Money"></param>
        /// <returns></returns>
        public static string ReadMoney(string Money)
        {
            string str = "";
            while (Money.Length < 12)
            {
                Money = "0" + Money;
            }
            string str2 = Money.Substring(0, 3);
            string str3 = Money.Substring(3, 3);
            string str4 = Money.Substring(6, 3);
            string str5 = Money.Substring(9, 3);
            if (str2 != "000")
            {
                str = ReadGroup3(str2) + " Tỷ";
            }
            if (str3 != "000")
            {
                str = str + ReadGroup3(str3) + " Triệu";
            }
            if (str4 != "000")
            {
                str = str + ReadGroup3(str4) + " Ng\x00e0n";
            }
            str = (str + ReadGroup3(str5)).Replace("Một Mươi", "Mười").Trim();
            if (str.IndexOf("Kh\x00f4ng Trăm") == 0)
            {
                str = str.Remove(0, 10);
            }
            str = str.Trim();
            if (str.IndexOf("Lẻ") == 0)
            {
                str = str.Remove(0, 2);
            }
            str = str.Trim().Replace("Mươi Một", "Mươi Mốt").Trim();
            return (str.Substring(0, 1).ToUpper() + str.Substring(1).ToLower() + " đồng");
        }
    }
}
